﻿#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

//声明一个链表结构体
typedef int SLTDataType;
typedef struct SLTListNode
{
	SLTDataType data;	//链表中存放的数据
	struct SLTListNode* next;	//链表中一个结点指向另一个结点的地址的指针
}SLTNode;

//链表的实现声明
void SLTPrint(SLTNode* phead);

//尾插声明
void STLPushBack(SLTNode** pphead,SLTDataType x);

//头插声明
void STLPushPront(SLTNode** pphead, SLTDataType x);

//尾删声明
void STLPopBack(SLTNode** pphead);

//头删声明
void STLPopPront(SLTNode** pphead);

//查找声明
SLTNode* SLTFind(SLTNode* phead, SLTDataType x);

//在指定位置之前插⼊数据声明
void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x);

//在指定位置之后插⼊数据声明
void SLTInsertAfter(SLTNode* pos, SLTDataType x);

//删除pos结点声明
void SLTErase(SLTNode** pphead, SLTNode* pos);

//删除pos之后的结点声明
void SLTEraseAfter(SLTNode* pos);

//销毁链表声明
void SListDestroy(SLTNode** pphead);